# coding:utf-8
# 王一舟
# run.py
#框架运行的入口

#框架运行的入口

import pytest
import os
import pathlib

from core.CasesPlugin import CasesPlugin

# import sys
# path = r"c:\python310\lib\site-packages"
# sys.path.append(path)


'''
#todo 1 最基础的应用,自己找符合规则的测试用例
# pytest.main(["-vs"]) #mian方法里的参数是一个列表
'''

excel_path = pathlib.Path(__file__).parents[0].resolve() / 'cases' / 'excel_files'
yaml_path = pathlib.Path(__file__).parents[0].resolve() / 'cases' / 'yaml_files'

# PATH = "C:\工程\Requests_API\华测接口自动化\KEYWORD_1\yaml_files"



#todo 2 生成allure测试报告
pytest_args = ["-s","-v","--capture=sys",#用于显式输出调试信息,设置级别, --capture=sys : 打开实时输出
               "./core/ApiTestRunner.py", #指定运行的文件
               "--clean-alluredir",#清空alluredir中的历史数据
               "--alluredir=allure-results",#执行过程中的json数据放到allure-results文件夹中
               "--type=yaml",#执行运行的用例类型
               f"--cases={yaml_path}",#指定运行的用例路径(文件夹)
               #失败重跑:
               #前提: pip install pytest-rerunfailures
               "--reruns=2",#失败重跑的次数
               "--reruns-delay=3" #等待运行的秒数
               ]

pytest.main(pytest_args,plugins=[CasesPlugin()]) #主函数mian()方法里的参数是一个列表 / plugins 在[]中写入插件类
# pytest.main(pytest_args) #主函数mian()方法里的参数是一个列表 / plugins 在[]中写入插件类

#todo 2-2 基于生成的json数据,生成allure-html
os.system("allure generate -c -o ./allure-report") #allure generate -c -o 为固定写法, allure-report为输出报告的文件夹名称,自定义

#todo 2-3 将html报告生成为本地
#注意!:allure报告必须以服务的形式打开,直接进入文件夹目录,双击index.html是无法打开的(没有数据)
#解决办法如下 : 用allure_combine插件的方式生成报告
from allure_combine import combine_allure  # pip install allure_combine
combine_allure("./allure-report") #这样生成的html报告就可以发送给其他人无需再以服务形式打开(整个allure-report文件夹一起给别人)



